home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / misc / amag / AM95022.lha / c++-kurs-2 / Listing2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-29  |  956 b   |  34 lines

  1. /* Listing2: © Clemens Marschner, 1994
  2.  * Ein einfaches Funktions-Template  */
  3.  
  4. #include <exec/types.h> // für BOOL
  5. #include <string.h>     // für strcmp()
  6. #include <stream.h>     // für cout
  7.  
  8. // Maximum-Funktion: Gibt den größeren Wert zurück
  9.  
  10. template <class T>  // T ist ein beliebiger Platzhalter.
  11. inline T Max(T a, T b) { return (a > b ? a : b); }
  12.  
  13. // Max kann für alle Typen verwendet werden, die für den 
  14. // Operator ">" eine überladene Funktion bereitstellen.
  15. // Damit ein Zeiger, z.B. char*, nicht einfach als
  16. // Zeigerwert verglichen wird, sondern dessen Inhalt, 
  17. // muß man das Funktions-Template überladen
  18. // Diese Definition hat Vorrang vor dem Template
  19.  
  20. inline char *Max(char *a, char *b)
  21. {
  22.     return (strcmp(a,b) > 0 ? a : b);
  23. }
  24.  
  25. void main() {
  26.     char *a = "Peter";
  27.     char *b = "Meyer";
  28.     int c = 38, d = 18;
  29.     cout << Max(a, b) << ", " << Max(c, d) << "\n";
  30.     // Ausgabe: Peter,38
  31.     // cout << Max(a, c); ergäbe einen Fehler
  32. }
  33.  
  34.